package com.ssy.lingxi.order.api.model.vo.response;

import com.ssy.lingxi.common.constant.order.OrderPayChannelEnum;
import com.ssy.lingxi.common.constant.order.OrderPayTypeEnum;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 售后能力 - 退货换货 - 订单支付记录
 * @author 万宁
 * @version 2.0.0
 * @date 2021-08-25
 */
public class OrderAfterSalePaymentFeignDetailVO implements Serializable {
    private static final long serialVersionUID = -1217960333018321877L;

    public OrderAfterSalePaymentFeignDetailVO() {
    }

    public OrderAfterSalePaymentFeignDetailVO(Long orderId, String orderNo, Long paymentId, LocalDateTime payTime, Integer batchNo, String payNode, BigDecimal payRate, BigDecimal payAmount, Integer fundMode, Integer payType, Integer payChannel, String tradeNo, Integer settlementStatus, Boolean confirmPayment, Boolean accomplished) {
        this.orderId = orderId;
        this.orderNo = orderNo;
        this.paymentId = paymentId;
        this.payTime = payTime;
        this.batchNo = batchNo;
        this.payNode = payNode;
        this.payRate = payRate;
        this.payAmount = payAmount;
        this.fundMode = fundMode;
        this.payType = payType;
        this.payTypeName = OrderPayTypeEnum.getNameByCode(payType);
        this.payChannel = payChannel;
        this.payChannelName = OrderPayChannelEnum.getNameByCode(payChannel);
        this.tradeNo = tradeNo;
        this.confirmPayment = confirmPayment;
        this.accomplished = accomplished;
    }

    /**
     * 订单Id
     */
    private Long orderId;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 支付记录Id
     */
    private Long paymentId;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 支付次数
     */
    private Integer batchNo;

    /**
     * 支付环节名称
     */
    private String payNode;

    /**
     * 支付比例（例：50%，payRate=0.5）
     */
    private BigDecimal payRate;

    /**
     * 支付金额
     */
    private BigDecimal payAmount;

    /**
     * 资金归集模式枚举，定义在 FundModeEnum 中
     */
    private Integer fundMode;

    /**
     * 支付方式枚举，定义在 OrderPayTypeEnum 中
     */
    private Integer payType;

    /**
     * 支付方式名称
     */
    private String payTypeName;

    /**
     * 支付渠道枚举， 定义在 OrderPayChannelEnum 中
     */
    private Integer payChannel;

    /**
     * 支付渠道名称
     */
    private String payChannelName;

    /**
     * 在线支付的商户订单号（用于在线支付的退款）
     */
    private String tradeNo;

    /**
     * 结算状态, 定义在 OrderPaymentSettlementStatusEnum 中
     */
    private Integer settlementStatus;

    /**
     * 是否处于“待确认支付结果”状态
     */
    private Boolean confirmPayment;

    /**
     * 是否处于“确认到账”状态
     */
    private Boolean accomplished;

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Long getPaymentId() {
        return paymentId;
    }

    public void setPaymentId(Long paymentId) {
        this.paymentId = paymentId;
    }

    public LocalDateTime getPayTime() {
        return payTime;
    }

    public void setPayTime(LocalDateTime payTime) {
        this.payTime = payTime;
    }

    public Integer getBatchNo() {
        return batchNo;
    }

    public void setBatchNo(Integer batchNo) {
        this.batchNo = batchNo;
    }

    public String getPayNode() {
        return payNode;
    }

    public void setPayNode(String payNode) {
        this.payNode = payNode;
    }

    public BigDecimal getPayRate() {
        return payRate;
    }

    public void setPayRate(BigDecimal payRate) {
        this.payRate = payRate;
    }

    public BigDecimal getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(BigDecimal payAmount) {
        this.payAmount = payAmount;
    }

    public Integer getFundMode() {
        return fundMode;
    }

    public void setFundMode(Integer fundMode) {
        this.fundMode = fundMode;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public String getPayTypeName() {
        return payTypeName;
    }

    public void setPayTypeName(String payTypeName) {
        this.payTypeName = payTypeName;
    }

    public Integer getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(Integer payChannel) {
        this.payChannel = payChannel;
    }

    public String getPayChannelName() {
        return payChannelName;
    }

    public void setPayChannelName(String payChannelName) {
        this.payChannelName = payChannelName;
    }

    public String getTradeNo() {
        return tradeNo;
    }

    public void setTradeNo(String tradeNo) {
        this.tradeNo = tradeNo;
    }

    public Integer getSettlementStatus() {
        return settlementStatus;
    }

    public void setSettlementStatus(Integer settlementStatus) {
        this.settlementStatus = settlementStatus;
    }

    public Boolean getConfirmPayment() {
        return confirmPayment;
    }

    public void setConfirmPayment(Boolean confirmPayment) {
        this.confirmPayment = confirmPayment;
    }

    public Boolean getAccomplished() {
        return accomplished;
    }

    public void setAccomplished(Boolean accomplished) {
        this.accomplished = accomplished;
    }
}
